﻿# -*- coding: utf-8 -*-
import sys  
reload(sys)
sys.setdefaultencoding('utf8')  
import string
import cgi
import urllib
import random
import datetime
import re
from google.appengine.ext import db
from google.appengine.api.labs import taskqueue
from sgmllib import SGMLParser, SGMLParseError
from google.appengine.api import urlfetch
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

num2mask = {
	'1':'128.0.0.0',
	'2':'192.0.0.0',
	'3':'224.0.0.0',
	'4':'240.0.0.0',
	'5':'248.0.0.0',
	'6':'252.0.0.0',
	'7':'254.0.0.0',
	'8':'255.0.0.0',
	'9':'255.128.0.0',
	'10':'255.192.0.0',
	'11':'255.224.0.0',
	'12':'255.240.0.0',
	'13':'255.248.0.0',
	'14':'255.252.0.0',
	'15':'255.254.0.0',
	'16':'255.255.0.0',
	'17':'255.255.128.0',
	'18':'255.255.192.0',
	'19':'255.255.224.0',
	'20':'255.255.240.0',
	'21':'255.255.248.0',
	'22':'255.255.252.0',
	'23':'255.255.254.0',
	'24':'255.255.255.0',
	'25':'255.255.255.128',
	'26':'255.255.255.192',
	'27':'255.255.255.224',
	'28':'255.255.255.240',
	'29':'255.255.255.248',
	'30':'255.255.255.252',
	'31':'255.255.255.254',
	'32':'255.255.255.255'
}


urlcnroute = 'http://www.ipdeny.com/ipblocks/data/countries/cn.zone'

class RouteHandler(webapp.RequestHandler):
	def get(self):
		self.response.out.write("""<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>国内ip路由表</title>
<body bgcolor=black>
<font color=white><font class=num>命令提示符：</font><br /><br />
		"""
		)
		if cgi.escape(self.request.get('del')) != "":
			lincmd = 'route del -net '
			wincmd = 'route -p delete '
		else:
			lincmd = 'route add -net '
			wincmd = 'route add -p '
		if cgi.escape(self.request.get('gateway')) != "":
			gateway = self.request.get('gateway')
		else:
			gateway = 'eth0'
		result = urlfetch.fetch(url=urlcnroute, payload=[], method=urlfetch.GET, headers={'Content-Type': 'application/x-www-form-urlencoded'},follow_redirects = True, allow_truncated=True, deadline=30)
		ippattern = re.compile('(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})/(\d{1,2})')
		for ip in ippattern.finditer(result.content):
			if cgi.escape(self.request.get('os')) == "win":
				self.response.out.write(wincmd+ip.group(1)+' mask '+num2mask[ip.group(2)]+' '+gateway+'<br />')
			else:
				self.response.out.write(lincmd+ip.group(1)+' netmask '+num2mask[ip.group(2)]+' '+gateway+'<br />')
		self.response.out.write("</font></body>")

application = webapp.WSGIApplication(
																		 [('/getroute', RouteHandler)],
																		 debug=True)

def main():
	run_wsgi_app(application)

if __name__ == "__main__":
	main()